package modeling;


/**
 * @author Mathieu Rousseau
 * @email mathieu.rousseau3@mail.mcgill.ca
 */


/** ------------------------------------------------------------------------------------------------------------------
 * start of MCMC5CMain class
 * ------------------------------------------------------------------------------------------------------------------  **/
public class MCMC5CMain {

	
	/*  start of main method  */
	public static void main(String[] args) {	
		
		//  parameters for the MCMC5C program
		String filenameIFs, filenameFragments, initialStructureFilename;
		long runLength;
		double stepSize, exponent;
		int numberOfStructuresToOutput, initialStructureCase;
		
		
		//  MCMC5C program object
		MCMC5C structureSolver = new MCMC5C();
		
		
		
		
		
		
		/** ------------------------------------------------------------------------------------------------------------------
		 * 
		 * 
		 * 								HARDCODING OF PARAMETERS
		 * 
		 * 
		 * ------------------------------------------------------------------------------------------------------------------  */
		
		
		//  Hi-C data
//		int chromosomeNumber = 14;
//		filenameIFs = "IFs_chr" + chromosomeNumber + ".txt";
//		filenameFragments = "fragments_chr" + chromosomeNumber + ".txt";
//		filenameIFs = "IFs_chrX.txt";
//		filenameFragments = "fragments_chrX.txt";
		
//		filenameIFs = "IFs_K562_chr14.txt";
//		filenameFragments = "fragments_chr14.txt";
//		filenameIFs = "IFs_K562_chr22.txt";
//		filenameFragments = "fragments_chr22.txt";
		
		
//		filenameIFs = "IFs_HB119.txt";
//		filenameIFs = "IFs_HB119_simulated_with_normal_noise.txt";
//		filenameFragments = "fragments_HB119.txt";
		
		
//		filenameIFs = "IFs_DMSO.txt";
//		filenameIFs = "IFs_PMA.txt";
//		filenameFragments = "fragments.txt";

		
//		filenameIFs = "IFs_HoxA_BMH.txt";
//		filenameIFs = "IFs_HoxA_Nalm6.txt";
//		filenameFragments = "fragments_HoxA.txt";


//		filenameIFs = "IFs_siCTCF.txt";
//		filenameIFs = "IFs_siNC.txt";
//		filenameFragments = "fragments_HoxA.txt";
		
		
		//  Simulated Cube
//		filenameIFs = "IFs_Simulated_Cube.txt";
//		filenameFragments = "fragments_Simulated_Cube.txt";
		
		
		filenameIFs = "IFs_BM-A.txt";
//		filenameIFs = "IFs_BM-H.txt";
//		filenameIFs = "IFs_BM-H2.txt";
//		filenameIFs = "IFs_Nalm-6.txt";
		filenameFragments = "fragments_HoxA_48removed.txt";
		
		
		runLength = (long)1E9;

		numberOfStructuresToOutput = 100;

		stepSize = 0.05;
		
		exponent = 2.0;
		
		//  there are four (4) options for the initial structure case
		//  only case 0 will use the initial structure filename, the other three cases (1-3) will ignore the filename
		//  case 0: use an initial structure from file as specified by the initialStructureFilename
		//  case 1: use a small cube with side length [0, 0.01[
		//  case 2: use a cube with side length = 10 * avgIF^exponent
		//  case 3: use a spiral with small random noise
		initialStructureCase = 2;
		
		//  the file specified by the initialStructureFilename MUST exist in the Input folder for initial structure case zero (0)
//		initialStructureFilename = "initial_structure_HB119.pdb";
		initialStructureFilename = "initial_structure_DMSO_5.pdb";

		
		/** ------------------------------------------------------------------------------------------------------------------
		 * 
		 * 
		 * 								END OF HARDCODING OF PARAMETERS
		 * 
		 * 
		 * ------------------------------------------------------------------------------------------------------------------  */
		
		
		
		
		
		//  add all of the parameters to the arguments array
		args = new String[8];
		args[0] = filenameIFs;
		args[1] = filenameFragments;
		args[2] = String.valueOf(runLength);
		args[3] = String.valueOf(numberOfStructuresToOutput);
		args[4] = String.valueOf(stepSize);
		args[5] = String.valueOf(exponent);
		args[6] = String.valueOf(initialStructureCase);
		args[7] = initialStructureFilename;

		
		//  run the MCMC5C program
		structureSolver.run(args);
		
	}/*  end of main method  */

	
}/*  end of MCMC5CMain class  */